package com.aps.demo.adapter;

import com.aps.demo.model.ProductionData;
import com.aps.common.model.APSProductModel;

/**
 * 模型适配器接口
 * 用于将不同格式的输入数据转换为标准APS参数模型
 */
public interface ModelAdapter {
    
    /**
     * 将输入数据适配为标准APS参数模型
     * 
     * @param sourceData 源数据
     * @return 标准APS参数模型
     */
    APSProductModel adapt(ProductionData sourceData);
    
    /**
     * 验证模型的有效性
     * 
     * @param model APS参数模型
     * @return 验证结果
     */
    ValidationResult validate(APSProductModel model);
    
    /**
     * 将模型转换为指定格式
     * 
     * @param model APS参数模型
     * @param targetFormat 目标格式
     * @return 转换后的数据
     */
    Object transform(APSProductModel model, String targetFormat);
    
    /**
     * 获取适配器支持的行业类型
     * 
     * @return 行业类型
     */
    String getSupportedIndustry();
    
    /**
     * 验证结果
     */
    class ValidationResult {
        private boolean isValid;
        private String[] errors;
        
        public ValidationResult(boolean isValid, String... errors) {
            this.isValid = isValid;
            this.errors = errors;
        }
        
        public boolean isValid() {
            return isValid;
        }
        
        public String[] getErrors() {
            return errors;
        }
        
        public static ValidationResult success() {
            return new ValidationResult(true);
        }
        
        public static ValidationResult failure(String... errors) {
            return new ValidationResult(false, errors);
        }
    }
} 